/**
 * 
 */
Ext.define('Receiver', {
	extend : 'Ext.data.Model',
	fields : [ {
		name : 'id',
		type : 'int'
	}, {
		name : 'name',
		type : 'string'
	}, {
		name : 'mobilephone',
		type : 'string'
	}, {
		name : 'tel',
		type : 'string'
	}, {
		name : 'email',
		type : 'string'
	}, {
		name : 'deptname',
		type : 'string'
	} ]
});

Ext.define('Message', {
	extend : 'Ext.data.Model',
	fields : [ {
		name : 'id',
		type : 'int'
	}, {
		name : 'title',
		type : 'string'
	}, {
		name : 'status'
	}, {
		name : 'sendtime'
	}, {
		name : 'content',
		type : 'string'
	} ]
});

var messageStore = Ext.create('Ext.data.Store', {
	model : 'Message',
	pageSize : 20,
	proxy : {
		type : 'ajax',
		url : 'messageAction!queryMyPage.action',
		reader : {
			type : 'json',
			root : 'pageList'
		}
	}
});
var superDeptStore = Ext.create('Ext.data.TreeStore', {
	fields : [ 'id', 'name' ],
	proxy : {
		type : 'ajax',
		url : 'deptAction!getTreeBypid.action'
	},
	root : {
		id : '1',
		name : '上海市质量监督局',
		expanded : true
	},
	// rootVisible : false,
	reader : {
		type : 'json'
	}
});
var receiverTriggerHidden = Ext.create('Ext.form.Hidden', {
	name : 'receiverId'
});
var receiverTrigger = Ext.create('Ext.form.TriggerField', {
	emptyText : '请选择',
	fieldLabel : '接收人',
	labelWidth : 60,
	anchor : '96%',
	// allowBlank: false,
	editable : true,
	name : 'receiverName',
	enableKeyEvents : true,
	triggerClass : 'x-form-search-trigger',
	onTriggerClick : function() {
		receiverWin.show();
		superDeptStore.load();
	}
});
var userStore = new Ext.data.JsonStore({
	proxy : {
		type : 'ajax',
		url : 'messageAction!queryReceiver.action',
		reader : {
			type : 'json',
			root : 'pageList'
		}
	},
	fields : [ 'name', 'id' ]
});
userStore.load();
var userSelector = Ext.create('Ext.ux.form.ItemSelector', {
	name : 'users',
	store : userStore,
	displayField : 'name',
	valueField : 'id',
	msgTarget : 'side',
	fromTitle : '未选',
	toTitle : '已选'
});
var receiverForm = Ext.create('Ext.form.Panel', {
	bodyPadding : 5,
	border : 0,
	autoScroll : true,
	defaults : {
		anchor : '100%'
	},
	items : [ {
		id : 'dept',
		fieldLabel : '单位名称',
		xtype : 'treepicker',
		store : superDeptStore,
		displayField : 'name',
		valueField : 'id',
		value : 1,
		listeners : {
			select : function(view, record, sumitem, index, event, options) {
				var right = [];
				Ext.Array.each(userSelector.getValue(), function(item) {
					right.push(item);
				});
				var proxy = userStore.getProxy();
				proxy.extraParams = {
					'deptId' : this.value,
					'recids' : right
				};
				// userSelector.fromField.store.removeAll();
				userSelector.restore(userStore);
				userStore.reload();
			}
		}
	}, userSelector ]
});
var receiverWin = Ext.create('Ext.window.Window', {
	title : '接收人选择',
	autoHeight : true,
	width : 600,
	layout : 'fit',
	autoScroll : true,
	overflowX : 'auto',
	overflowY : 'auto',
	modal : true,
	closeAction : 'hide',
	closable : true,
	items : [ receiverForm ],
	listeners : {
		show : function() {
			receiverForm.getForm().reset();
		}
	},
	buttons : [ {
		text : '确定',
		handler : function() {
			receiverTriggerHidden.setValue(userSelector.getValue());
			receiverTrigger.setValue(userSelector.getText());
			receiverWin.hide();
		}
	}, {
		text : '取消',
		handler : function() {
			receiverWin.hide();
		}
	} ]
});
function readTitle(data, cell, record, rowIndex, columnIndex, store) {
	var id = record.get('id');
	var title = data;
	var style = 'font-family:仿宋;color:#15428b;cursor: pointer;font-weight:bold;text-decoration: underline;';
	title = '<span style="' + style + '"  data="' + title
			+ '" onclick="openDetail(' + id + ')">' + title + '</span>';
	return title;
}
function openDetail(id, mystatus, myid) {
	Ext.util.Cookies.set('messageId', id);
	window.top.Utils.addPage('messageQuery' + id, '查看信息',
			'js/resources/business/message/messageQuery.js');
}
var messageGrid = Ext
		.create(
				'Ext.grid.Panel',
				{
					store : messageStore,
					border : 0,
					selModel : Ext.create('Ext.selection.CheckboxModel'),
					stripeRows : true,
					bbar : Ext.create('Ext.PagingToolbar', {
						pageSize : 20,// 每页20条
						store : messageStore,
						displayInfo : true,
						plugins : Ext.create('Ext.ux.ProgressBarPager', {})
					}),
					tbar : [
							{
								text : '编辑信息',
								iconCls : 'icon-edit',
								id : 'edit',
								handler : function() {
									var selMode = messageGrid
											.getSelectionModel();
									var model = selMode.getSelection();
									if (model.length == 1) {
										var raw = model[0].raw;
										var messageId = raw.id;
										if (raw.status == 1) {
											masterForm.getForm().findField(
													'message.id').setValue(
													raw.id);
											masterForm.getForm().findField(
													'message.title').setValue(
													raw.title);
											masterForm.getForm().findField(
													'message.content')
													.setValue(raw.content);

											Ext.Ajax
													.request({
														url : 'messageAction!queryReceivers.action?messageId='
																+ messageId,
														success : function(
																response) {
															var responseText = response.responseText;
															responseText = Ext.JSON
																	.decode(responseText);
															var receivers = responseText.receivers;
															if (receivers != null) {
																var ids = [], names = [], _names = "";
																Ext.Array
																		.each(
																				receivers,
																				function(
																						item) {
																					ids
																							.push(item.userid);
																					names
																							.push(item.username);
																					_names = _names
																							+ item.username
																							+ ";";
																				});
																receiverTrigger
																		.setValue(_names);
																receiverTriggerHidden
																		.setValue(ids);
															}
														},
														failure : function(
																response) {
															alert("失败!");
														}
													});
										} else {
											Ext.Msg.alert('提示', '不能编辑非草稿信息！');
											return;
										}

									} else if (model.length > 1) {
										Ext.Msg.alert('提示', '只能选择一条编辑！');
										return;
									}
								}
							},
							{
								xtype : 'button',
								text : '删除',
								iconCls : 'icon-delete_trash',
								handler : function() {
									var selMode = messageGrid
											.getSelectionModel();
									var model = selMode.getSelection();
									if (model[0]) {
										var ids = [];// 删除多个
										Ext.Array.each(model, function(item) {
											ids.push(item.raw.id);
										});
										Ext.Msg
												.show({
													title : '确认删除',
													buttons : Ext.MessageBox.OKCANCEL,
													msg : '确认删除？',
													fn : function(btn) {
														if (btn == 'ok') {
															Ext.Ajax
																	.request({
																		url : 'messageAction!delete.action?ids='
																				+ ids,
																		success : function(
																				response) {
																			Ext.Msg
																					.show({
																						title : '提示',
																						msg : '删除成功！',
																						buttons : Ext.Msg.OK,
																						width : 300,
																						fn : function() {
																							messageStore
																									.reload();
																						}
																					});
																		},
																		failure : function(
																				response,
																				opts) {
																			console
																					.log('server-side failure with status code '
																							+ response.status);
																		}
																	});
														}
													}
												});

									}
								}
							} ],
					columns : [ {
						text : 'id',
						dataIndex : 'id',
						hidden : true
					}, {
						text : '主题',
						remoteSort : true,
						dataIndex : 'title',
						renderer : readTitle,
						flex : 2
					}, {
						text : '发送时间',
						dataIndex : 'sendtime',
						renderer : function(value) {
							if (value != '') {
								return value.replace('T', ' ');
							}
						},
						flex : 1
					}, {
						text : '状态',
						dataIndex : 'status',
						renderer : function(value) {
							if (value == 1) {
								return "草稿";
							} else if (value == 2) {
								return "已发送";
							} else {
								return "已删除";
							}
						},
						flex : 0.5
					} ]
				});
var infoForm = Ext.create('Ext.form.Panel', {
	autoScroll : true,
	bodyPadding : 0,
	border : false,
	height : 700,
	defaults : {
		anchor : '100%'
	},
	items : [ {
		xtype : "fieldset",
		collapseFirst : true,
		border : false,
		// defaults : {
		// anchor : '100%'
		// },
		layout : 'anchor',
		items : [ receiverTriggerHidden, receiverTrigger, {
			xtype : 'textfield',
			fieldLabel : '主题<font color=red>*</font>',
			labelWidth : 60,
			name : 'message.title',
			anchor : '96%',
			emptyText : '请输入...',
			allowBlank : false,
			labelAlign : 'left'
		}, {
			xtype : 'panel',
			border : false,
			html : '内容<font color=red>*</font>：',
			bodyStyle : 'padding:0px,5px,0px,0px;border-width:0px 0px 0px 0px'
		}, {
			allowBlank : false,
			xtype : 'ueditor',
			width : '96%',
			height : 400,
			id : 'contentEditor1',
			name : 'message.content'
		// }, {
		// xtype : 'filefield',
		// name : 'file',
		// fieldLabel : '附件上传',
		// labelWidth : 60,
		// anchor : '96%',
		// buttonText : '选择附件...'
		}, {
			xtype : 'hiddenfield',
			name : 'message.id'
		}, {
			xtype : 'hiddenfield',
			name : 'operation'
		} ]
	} ]
});
var masterForm = Ext.create('Ext.form.Panel', {
	autoScroll : true,
	height : 750,
	bodyPadding : '10px 10px 10px 20px',
	border : false,
	url : 'messageAction!saveOrUpdate.action',
	defaults : {
		anchor : '100%'
	},
	items : [ infoForm ],
	tbar : [ {
		text : '立即发送',
		iconCls : 'icon-message_send',
		id : 'save1Btn',
		formBind : true,
		disabled : true,
		handler : function() {
			var form = masterForm.getForm();
			form.findField('operation').setValue("sand");
			form.submit({
				submitEmptyText : false,
				success : function(form, action) {
					msg = '发送成功！';
					Ext.Msg.show({
						title : '提示',
						msg : msg,
						buttons : Ext.Msg.OK,
						width : 300,
						fn : function() {
							messageStore.reload();
							form.reset();
						}
					});

				}
			});

		}
	}, {
		text : '存为草稿',
		id : 'save2Btn',
		iconCls : 'icon-draft',
		formBind : true,
		disabled : true,
		handler : function() {
			var form = masterForm.getForm();
			form.findField('operation').setValue("save");
			form.submit({
				submitEmptyText : false,
				success : function(form, action) {
					var msg = "保存草稿成功！";
					Ext.Msg.show({
						title : '提示',
						msg : msg,
						buttons : Ext.Msg.OK,
						width : 300,
						fn : function() {
							messageStore.reload();
							form.reset();
						}
					});

				}
			});
		}
	}, {
		text : '取消',
		id : 'closeBtn',
		iconCls : 'icon-close',
		handler : function() {
			Ext.Msg.show({
				title : '提示',
				msg : "确定离开当前界面？",
				buttons : Ext.Msg.YESNO,
				width : 300,
				fn : function(btn) {
					if (btn == "yes") {
						window.top.Utils.closePage('23');
					}
				}
			});
		}
	} ],
	buttonAlign : 'center'
});
Ext.onReady(function() {
	Ext.create('Ext.container.Viewport', {
		layout : 'fit',
		items : [ {
			border : false,
			layout : {
				type : 'hbox',
				align : 'stretch'
			},
			items : [ {
				flex : 1,
				layout : 'fit',
				items : [ messageGrid ]
			}, {
				flex : 1,
				layout : 'fit',
				items : [ masterForm ]
			} ]
		} ]
	});
	messageStore.load();
});
